package com.zhiyou100.review.day017.myfile;

import java.io.*;
import java.util.Scanner;

/**
 * @packageName: FileInputStreamTest
 * @className: com.zhiyou100.review.day017.myFile
 * @Description: TODO 字节流 测试
 * @author: yang
 * @date: 6/28/20
 */
public class FileInputStreamTest {
    /**
     * @Description: TODO 字节流练习1：使用字节流把a文件中的数据写到b文件中
     * @name: getOneFileToOtherFile
     * @param: [a, b]
     * @return: void
     * @date: 6/28/20 16:04
     * @author: yang
     */
    private static void getOneFileToOtherFile(String a, String b) throws IOException {
        File fileA = new File(a);
        File fileB = new File(b);
        // 创建 File

        FileInputStream fileInputStream = new FileInputStream(fileA);
        // 创建输入流
        FileOutputStream fileOutputStream = new FileOutputStream(fileB);
        // 创建输入流

        byte[] bytes = new byte[2];
        // 用数组放置 读取的字节
        while (true) {
            int n = fileInputStream.read(bytes, 0, bytes.length);
            // 获取 读取的字节数
            if (n == -1) {
                // 为 -1 说明到末尾了，跳出
                break;
            }
            fileOutputStream.write(bytes);
            // 写入 到 b 文件中
            fileOutputStream.flush();
            // flush 一次
        }
        fileInputStream.close();
        fileOutputStream.close();
        // 关闭流
    }


    /**
     * @Description: TODO 使用字节流把a文件中的数据转换后写到b文件中  大写转换为小写 小写转换为大写 删除数字
     * @name: getOneFileToOtherFileChange
     * @param: [a, b]
     * @return: void
     * @date: 6/28/20 16:29
     * @author: yang
     */
    private static void getOneFileToOtherFileChange(String a, String b) throws IOException {
        File fileA = new File(a);
        File fileB = new File(b);
        // 创建 File

        FileInputStream fileInputStream = new FileInputStream(fileA);
        // 创建输入流
        FileOutputStream fileOutputStream = new FileOutputStream(fileB);
        // 创建输入流

        byte[] bytes = new byte[2];
        // 用数组放置 读取的字节
        while (true) {
            int n = fileInputStream.read(bytes, 0, bytes.length);
            // 获取 读取的字节数
            if (n == -1) {
                // 为 -1 说明到末尾了，跳出
                break;
            }
            for (byte aByte : bytes) {
                char oneChar = (char) aByte;
                // 转为 Character
                if (Character.isUpperCase(oneChar)) {
                    // 大写转小写
                    fileOutputStream.write(Character.toLowerCase(oneChar));
                } else if (Character.isLowerCase(oneChar)) {
                    // 小写转大写
                    fileOutputStream.write(Character.toUpperCase(oneChar));
                } else if (!Character.isDigit(oneChar)) {
                    // 删除数字
                    fileOutputStream.write(oneChar);
                }
            }
            fileOutputStream.flush();
            // flush 一次
        }
        fileInputStream.close();
        fileOutputStream.close();
        // 关闭流
    }


    /**
     * @Description: TODO 把键盘写入的数据 数字写入a文件中  非数字写入b文件中
     * @name: getKayBoardToFile
     * @param: [a, b]
     * @return: void
     * @date: 6/28/20 16:29
     * @author: yang
     */
    private static void getKayBoardToFile(String a, String b) throws IOException {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        // 获取 键盘输入
        FileOutputStream fileA = new FileOutputStream(a);
        FileOutputStream fileB = new FileOutputStream(b);
        // 创建 输出流
        for (byte c : s.getBytes()) {
            if (Character.isDigit(c)) {
                // 是 数字
                fileA.write(c);
                fileA.flush();
            } else {
                // 不是 数字
                fileB.write(c);
                fileB.flush();
            }
        }
        fileA.close();
        fileB.close();
        // 关闭 流

    }


    public static void main(String[] args) throws IOException {



        String a = "/Users/yang/Downloads/test/a.txt";
        String b = "/Users/yang/Downloads/test/b.txt";
//        getOneFileToOtherFileChange(a, b);
    }
}

